#include "GpioInitHelper.h"
#include "BaseDef.h"

//Port Config
void App_PortCfg(void)
{
    /* GPIO initialize */
    stc_gpio_init_t stcGpioInit;
    /* PB1 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
	stcGpioInit.u16PinState = PIN_STAT_SET;
    (void)GPIO_Init(ETH_RST1_PORT, ETH_RST1_PIN, &stcGpioInit);

    /* PB14 set to USBHS-DM */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_B, GPIO_PIN_14, &stcGpioInit);

    /* PB15 set to USBHS-DP */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_B, GPIO_PIN_15, &stcGpioInit);

    /* PA11 set to USBFS-DM */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_A, GPIO_PIN_11, &stcGpioInit);

    /* PA12 set to USBFS-DP */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_A, GPIO_PIN_12, &stcGpioInit);

    /* PD6 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(SPI1_CS2_PORT, SPI1_CS2_PIN, &stcGpioInit);

    /* PB7 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(SPI1_CS1_PORT, SPI1_CS1_PIN, &stcGpioInit);

    /* PI13/MD set to GPIO-Input */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(RESET_PORT, RESET_PIN, &stcGpioInit);

    /* PH0 set to XTAL-IN */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_H, GPIO_PIN_00, &stcGpioInit);

    /* PH1 set to XTAL-OUT */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_H, GPIO_PIN_01, &stcGpioInit);

    /* PC15 set to XTAL32-IN */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_C, GPIO_PIN_15, &stcGpioInit);

    /* PC14 set to XTAL32-OUT */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(GPIO_PORT_C, GPIO_PIN_14, &stcGpioInit);

    /* PB12 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinDrv = PIN_HIGH_DRV;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(LED_ERR_PORT, LED_ERR_PIN, &stcGpioInit);

    /* PF10 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinDrv = PIN_HIGH_DRV;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(LED_RUN_PORT, LED_RUN_PIN, &stcGpioInit);

    /* PG8 set to EIRQ8 */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16ExtInt = PIN_EXTINT_ON;
    stcGpioInit.u16PullUp = PIN_PU_ON;
    (void)GPIO_Init(RTC_INT_PORT, RTC_INT_PIN, &stcGpioInit);

    /* PA6 set to U2_EN */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(U2_RTS_PORT, U2_RTS_PIN, &stcGpioInit);
	
	/* PD13 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(GPIO_PORT_D, GPIO_PIN_13, &stcGpioInit);

    /* PB9 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(CAN1_STB_PORT, CAN1_STB_PIN, &stcGpioInit);

    /* PC13 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
	stcGpioInit.u16PinState = PIN_STAT_SET;
    (void)GPIO_Init(NET_4G_RST_RN7326E_RST_PORT, NET_4G_RST_RN7326E_RST_PIN, &stcGpioInit);

    /* PB11 set to GPIO-Output */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    stcGpioInit.u16PinAttr = PIN_ATTR_DIGITAL;
    (void)GPIO_Init(ETH_RTS2_PORT, ETH_RTS2_PIN, &stcGpioInit);

    /* PC0 set to EIRQ0 */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16ExtInt = PIN_EXTINT_ON;
    stcGpioInit.u16PullUp = PIN_PU_ON;
    (void)GPIO_Init(NET_4G_INT_RN7326E_INT_PORT, NET_4G_INT_RN7326E_INT_PIN, &stcGpioInit);

    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_02,GPIO_FUNC_63);//CAN2-RX
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_03,GPIO_FUNC_62);//CAN2-TX
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_04,GPIO_FUNC_37);//USART6-RX
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_05,GPIO_FUNC_7);//USART6-RTS
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_06,GPIO_FUNC_36);//USART6-TX
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_00,GPIO_FUNC_12);//EXMC-ADD0
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_01,GPIO_FUNC_12);//EXMC-ADD1
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_02,GPIO_FUNC_12);//EXMC-ADD2
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_03,GPIO_FUNC_12);//EXMC-ADD3
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_04,GPIO_FUNC_12);//EXMC-ADD4
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_05,GPIO_FUNC_12);//EXMC-ADD5
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_01,GPIO_FUNC_11);//ETH-SMI-MDC
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_02,GPIO_FUNC_33);//USART3-RX
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_03,GPIO_FUNC_32);//USART3-TX
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_00,GPIO_FUNC_11);//ETH-MII-CRS
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_01,GPIO_FUNC_11);//ETH-MII-RMII-RXCLK
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_02,GPIO_FUNC_11);//ETH-SMI-MDIO
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_03,GPIO_FUNC_11);//ETH-MII-COL
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_07,GPIO_FUNC_11);//ETH-MII-RMII-RXDV
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_04,GPIO_FUNC_11);//ETH-MII-RMII-RXD0
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_05,GPIO_FUNC_11);//ETH-MII-RMII-RXD1
    
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_00,GPIO_FUNC_18);//SPI1-NSS3
    
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_02,GPIO_FUNC_35);//USART2-RX
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_11,GPIO_FUNC_34);//USART2-TX
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_12,GPIO_FUNC_12);//EXMC-ADD6
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_13,GPIO_FUNC_12);//EXMC-ADD7
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_14,GPIO_FUNC_12);//EXMC-ADD8
    
    GPIO_SetFunc(GPIO_PORT_F,GPIO_PIN_15,GPIO_FUNC_12);//EXMC-ADD9
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_00,GPIO_FUNC_12);//EXMC-ADD10
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_01,GPIO_FUNC_12);//EXMC-ADD11
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_07,GPIO_FUNC_12);//EXMC-DATA4
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_08,GPIO_FUNC_12);//EXMC-DATA5
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_09,GPIO_FUNC_12);//EXMC-DATA6
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_10,GPIO_FUNC_12);//EXMC-DATA7
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_11,GPIO_FUNC_12);//EXMC-DATA8
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_12,GPIO_FUNC_12);//EXMC-DATA9
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_13,GPIO_FUNC_12);//EXMC-DATA10
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_14,GPIO_FUNC_12);//EXMC-DATA11
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_15,GPIO_FUNC_12);//EXMC-DATA12
    
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_10,GPIO_FUNC_11);//ETH-MII-RXER
    
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_13,GPIO_FUNC_12);//USBHS-VBUS
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_08,GPIO_FUNC_12);//EXMC-DATA13
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_09,GPIO_FUNC_12);//EXMC-DATA14
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_10,GPIO_FUNC_12);//EXMC-DATA15
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_11,GPIO_FUNC_12);//EXMC-ADD16
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_12,GPIO_FUNC_12);//EXMC-ADD17
    
    //GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_13,GPIO_FUNC_7);//USART9-RTS
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_14,GPIO_FUNC_12);//EXMC-DATA0
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_15,GPIO_FUNC_12);//EXMC-DATA1
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_02,GPIO_FUNC_12);//EXMC-ADD12
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_03,GPIO_FUNC_36);//USART9-TX
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_04,GPIO_FUNC_37);//USART9-RX
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_05,GPIO_FUNC_50);//I2C2-SDA
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_06,GPIO_FUNC_51);//I2C2-SCL
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_07,GPIO_FUNC_40);//SPI1-SCK
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_06,GPIO_FUNC_42);//SPI1-MISO
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_07,GPIO_FUNC_41);//SPI1-MOSI
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_08,GPIO_FUNC_52);//I2C4-SDA
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_09,GPIO_FUNC_53);//I2C4-SCL
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_08,GPIO_FUNC_9);//SDIO1-D1
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_09,GPIO_FUNC_10);//USBFS-VBUS
    
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_10,GPIO_FUNC_9);//SDIO1-CD
    
    GPIO_SetDebugPort(GPIO_PIN_TDI, DISABLE);
    GPIO_SetFunc(GPIO_PORT_A,GPIO_PIN_15,GPIO_FUNC_19);//SPI1-NSS0
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_10,GPIO_FUNC_9);//SDIO1-D2
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_11,GPIO_FUNC_9);//SDIO1-D3
    
    GPIO_SetFunc(GPIO_PORT_C,GPIO_PIN_12,GPIO_FUNC_9);//SDIO1-CK
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_00,GPIO_FUNC_12);//EXMC-DATA2
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_01,GPIO_FUNC_12);//EXMC-DATA3
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_02,GPIO_FUNC_9);//SDIO1-CMD
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_03,GPIO_FUNC_12);//EXMC-CLK
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_04,GPIO_FUNC_12);//EXMC-OE
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_05,GPIO_FUNC_12);//EXMC-WE
    
    GPIO_SetFunc(GPIO_PORT_D,GPIO_PIN_07,GPIO_FUNC_12);//EXMC-CE0
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_09,GPIO_FUNC_12);//EXMC-CE1
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_10,GPIO_FUNC_12);//EXMC-CE2
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_11,GPIO_FUNC_11);//ETH-MII-RMII-TXEN
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_12,GPIO_FUNC_12);//EXMC-CE3
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_13,GPIO_FUNC_11);//ETH-MII-RMII-TXD0
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_14,GPIO_FUNC_11);//ETH-MII-RMII-TXD1
    
    GPIO_SetFunc(GPIO_PORT_G,GPIO_PIN_15,GPIO_FUNC_12);//EXMC-BAA
    
    GPIO_SetDebugPort(GPIO_PIN_TRST, DISABLE);
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_04,GPIO_FUNC_9);//SDIO1-D0
    
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_05,GPIO_FUNC_12);//EXMC-ALE
    
    GPIO_SetFunc(GPIO_PORT_B,GPIO_PIN_06,GPIO_FUNC_11);//ETH-MII-TXCLK
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_00,GPIO_FUNC_12);//EXMC-CE4
    
    GPIO_SetFunc(GPIO_PORT_E,GPIO_PIN_01,GPIO_FUNC_12);//EXMC-CE5
    
    GPIO_SetFunc(GPIO_PORT_I,GPIO_PIN_12,GPIO_FUNC_12);//EXMC-CLE
    
}
